
import AppTabbar from './AppTabbar';
import AppPromises from './AppPromises';

/**
 *  角色配置
 */
export const AppRolse = {
  zhsq: {
    admin: {
      name: '超级管理员',
      // roleid: '1',
      roleAlias: 'administrator',
      tabbar: AppTabbar.universalTabbar,
      promises: AppPromises.common,
    },
    zh_resident: {
      // （普通居民实名认证后）
      name: '智慧社区居民',
      // roleid: '2',
      roleAlias: 'zh_resident',
      tabbar: AppTabbar.universalTabbar,
      promises: AppPromises.common,
    },
    normal_resident: {
      // （注册的普通用户）
      name: '普通居民',
      // roleid: '1766402998605676546',
      roleAlias: 'normal_resident',
      tabbar: AppTabbar.universalTabbar,
      promises: AppPromises.common,
    },
    volunteer:{
      // （注册的志愿者）
      name: '志愿者',
      roleAlias: 'operate',
      tabbar: AppTabbar.universalTabbar,
      promises: AppPromises.common,
    }
  }
}



/**
 * 角色id获取角色配置
 * @param {*} idOrAlias ID或者角色别名（请使用别名）
 * @returns 
 */
export function getRolseConfig(idOrAlias) {
  if (!idOrAlias) return null;
  // 遍历AppRolse拿到角色配置
  for (let appkey in AppRolse) {
    for (let rolekey in AppRolse[appkey]) {
      const role = AppRolse[appkey][rolekey];
      // 角色别名或者角色id相同
      if (role.roleAlias === idOrAlias || role.roleid === idOrAlias) {
        return role;
      }
    }
  }
  // 没有找到该角色时 
  console.warn("没有相关角色配置！， 请检查/App.js 相关配置", idOrAlias, "(如该角色不在端中使用，请忽略)");
  return null/* */;
}


/** 获取角色所属APPKey (用于登录时保存应用类型)*/
export function getRolseAPPKey(idOrAlias) {
  for (let appkey in AppRolse) {
    for (let rolekey in AppRolse[appkey]) {
      const role = AppRolse[appkey][rolekey];
      if (role.roleAlias === idOrAlias || role.roleid === idOrAlias) {
        return appkey;
      }
    }
  }
  // 没有找到该角色时  默认
  return 'traveling';
}



// 当前角色是否拥有某个权限
export function isAuth(userRoleIdOrAlias, key) {
  const config = getRolseConfig(userRoleIdOrAlias);
  if (!config) return false;
  const promises = config.promises;
  if (!promises) return false;
  for (let i of promises) {
    if (key == i) return true;
  }
  return false;
}